Group Predictions

Row

Win percentage for the week

Season Win Percentage

Games Correct

40

Games Picked

64

Number of predictions

130

Row

This Week’s Predictions
Game Prediction Winner Correct Correct Votes Correct Percent
1 Dallas Cowboys Dallas Cowboys Yes 97 0.7462
2 New York Jets Denver Broncos No 7 0.0538
3 Cincinnati Bengals Cincinnati Bengals Yes 93 0.7154
4 Houston Texans Houston Texans Yes 117 0.9000
5 Los Angeles Rams Chicago Bears No 45 0.3462
6 Minnesota Vikings Minnesota Vikings Yes 97 0.7462
7 New Orleans Saints Atlanta Falcons No 35 0.2692
8 Philadelphia Eagles Tampa Bay Buccaneers No 48 0.3692
9 Pittsburgh Steelers Indianapolis Colts No 16 0.1231
10 Washington Commanders Washington Commanders Yes 80 0.6154
11 San Francisco 49ers San Francisco 49ers Yes 120 0.9231
12 Las Vegas Raiders Las Vegas Raiders Yes 79 0.6077
13 Kansas City Chiefs Kansas City Chiefs Yes 103 0.7923
14 Buffalo Bills Baltimore Ravens No 51 0.3923
15 Miami Dolphins Tennessee Titans No 57 0.4385
16 Detroit Lions Detroit Lions Yes 93 0.7154

Individual Predictions

row

Individual Table

Individual Results
Week 4
Name Weekly # Correct Percent Weeks Picked Season Percent Adj Season Percent Season Trend
Week 1 Week 2 Week 3 Week 4
Marc Agne 14 7 9 13 0.8125 4 0.6719 0.6719
Robert Cunningham 14 9 10 12 0.7500 4 0.7031 0.7031
Heather Kohler 12 NA 7 12 0.7500 3 0.6458 0.4844
Paul Presti 12 8 9 12 0.7500 4 0.6406 0.6406
Randolph Tidd 11 7 8 12 0.7500 4 0.5938 0.5938
Chris Papageorge 14 8 10 11 0.6875 4 0.6719 0.6719
Wayne Gokey 13 7 NA 11 0.6875 3 0.6458 0.4844
Shaun Dahl 14 7 9 11 0.6875 4 0.6406 0.6406
Nathan Brown 13 8 9 11 0.6875 4 0.6406 0.6406
Derrick Elam 13 9 8 11 0.6875 4 0.6406 0.6406
Karen Coleman 13 6 NA 11 0.6875 3 0.6250 0.4688
Anthony Bloss 13 8 8 11 0.6875 4 0.6250 0.6250
Bradley Hobson 13 7 8 11 0.6875 4 0.6094 0.6094
David Humes 10 9 8 11 0.6875 4 0.5938 0.5938
Ryan Cvik 10 8 9 11 0.6875 4 0.5938 0.5938
Keven Talbert 10 7 9 11 0.6875 4 0.5781 0.5781
Jeremy Stieler 11 9 6 11 0.6875 4 0.5781 0.5781
Bunnaro Sun 12 5 8 11 0.6875 4 0.5625 0.5625
Thomas Cho 10 6 NA 11 0.6875 3 0.5625 0.4219
Jordan Forwood 11 8 6 11 0.6875 4 0.5625 0.5625
Ramar Williams 10 8 7 11 0.6875 4 0.5625 0.5625
Vincent Scannelli 11 7 7 11 0.6875 4 0.5625 0.5625
Richard Beeghley 11 7 6 11 0.6875 4 0.5469 0.5469
James Small 12 NA 9 10 0.6250 3 0.6458 0.4844
Kevin Kehoe 13 7 9 10 0.6250 4 0.6094 0.6094
Shawn Carden 10 9 10 10 0.6250 4 0.6094 0.6094
Megan Fitzgerald 8 11 9 10 0.6250 4 0.5938 0.5938
Kevin Buettner 12 8 8 10 0.6250 4 0.5938 0.5938
Nicole Dike 13 7 8 10 0.6250 4 0.5938 0.5938
George Sweet 13 9 6 10 0.6250 4 0.5938 0.5938
Ryan Baum 14 4 9 10 0.6250 4 0.5781 0.5781
Philip Driskill 12 7 8 10 0.6250 4 0.5781 0.5781
Daniel Halse 12 6 8 10 0.6250 4 0.5625 0.5625
Amy Asberry 11 8 6 10 0.6250 4 0.5469 0.5469
Jonathon Leslein 10 8 7 10 0.6250 4 0.5469 0.5469
Zechariah Ziebarth 8 8 8 10 0.6250 4 0.5312 0.5312
Noah Gosswiller 8 7 NA 10 0.6250 3 0.5208 0.3906
Jonathan Smith 11 NA 4 10 0.6250 3 0.5208 0.3906
Edward Ford 9 7 6 10 0.6250 4 0.5000 0.5000
Jack Wheeler 9 6 5 10 0.6250 4 0.4688 0.4688
Stephen Bush 9 7 4 10 0.6250 4 0.4688 0.4688
Jeffrey Rudderforth 11 11 10 9 0.5625 4 0.6406 0.6406
David Dupree 13 8 10 9 0.5625 4 0.6250 0.6250
Akilah Gamble 9 NA 12 9 0.5625 3 0.6250 0.4688
Robert Gelo 14 8 9 9 0.5625 4 0.6250 0.6250
Aubrey Conn 13 7 10 9 0.5625 4 0.6094 0.6094
Kristen White 14 7 9 9 0.5625 4 0.6094 0.6094
Erik Neumann 12 8 9 9 0.5625 4 0.5938 0.5938
Michelle Fraterrigo 11 8 9 9 0.5625 4 0.5781 0.5781
William Schouviller 12 7 9 9 0.5625 4 0.5781 0.5781
Gregory Brown 15 7 6 9 0.5625 4 0.5781 0.5781
Michael Pacifico 13 8 7 9 0.5625 4 0.5781 0.5781
Brandon Parks 12 6 9 9 0.5625 4 0.5625 0.5625
Patrick Tynan 12 8 7 9 0.5625 4 0.5625 0.5625
Anthony Brinson 11 7 NA 9 0.5625 3 0.5625 0.4219
Matthew Olguin 10 8 9 9 0.5625 4 0.5625 0.5625
Karen Richardson 10 9 7 9 0.5625 4 0.5469 0.5469
Antonio Mitchell 11 7 8 9 0.5625 4 0.5469 0.5469
Brian Patterson 11 6 9 9 0.5625 4 0.5469 0.5469
Jason Schattel 13 7 6 9 0.5625 4 0.5469 0.5469
Jamie Ainsleigh-Wong 9 8 9 9 0.5625 4 0.5469 0.5469
Earl Dixon 10 9 6 9 0.5625 4 0.5312 0.5312
Ronald Schmidt 10 10 5 9 0.5625 4 0.5312 0.5312
Michael Branson 9 8 8 9 0.5625 4 0.5312 0.5312
Darvin Graham 12 7 6 9 0.5625 4 0.5312 0.5312
Keisha Vasquez 8 7 9 9 0.5625 4 0.5156 0.5156
Gabriel Quinones 10 7 6 9 0.5625 4 0.5000 0.5000
Walter Archambo 8 8 7 9 0.5625 4 0.5000 0.5000
Pablo Burgosramos 9 5 8 9 0.5625 4 0.4844 0.4844
Travis Delagardelle 11 12 10 8 0.5000 4 0.6406 0.6406
Matthew Schultz 13 10 9 8 0.5000 4 0.6250 0.6250
Bruce Williams 13 9 10 8 0.5000 4 0.6250 0.6250
Cherylynn Vidal 13 9 8 8 0.5000 4 0.5938 0.5938
Christopher Sims 11 9 10 8 0.5000 4 0.5938 0.5938
Kevin Green 11 9 NA 8 0.5000 3 0.5833 0.4375
Michael Moss 13 8 8 8 0.5000 4 0.5781 0.5781
Trevor Macgavin 12 7 10 8 0.5000 4 0.5781 0.5781
Chester Todd 13 8 8 8 0.5000 4 0.5781 0.5781
Daniel Baller 14 6 9 8 0.5000 4 0.5781 0.5781
Jared Kaanga 11 9 9 8 0.5000 4 0.5781 0.5781
Nahir Shepard 11 8 10 8 0.5000 4 0.5781 0.5781
Marcus Evans 11 8 NA 8 0.5000 3 0.5625 0.4219
Heather Ellenberger 13 8 7 8 0.5000 4 0.5625 0.5625
Jose Torres Mendoza 12 8 8 8 0.5000 4 0.5625 0.5625
Darryle Sellers 11 11 6 8 0.5000 4 0.5625 0.5625
Christopher Mulcahy 11 9 7 8 0.5000 4 0.5469 0.5469
Tara Bridgett 11 8 8 8 0.5000 4 0.5469 0.5469
Anthony Rockemore 13 8 6 8 0.5000 4 0.5469 0.5469
Brayant Rivera 10 8 9 8 0.5000 4 0.5469 0.5469
Ryan Shipley 11 6 10 8 0.5000 4 0.5469 0.5469
Ashlyn Dortch 9 NA NA 8 0.5000 2 0.5312 0.2656
Jeffrey Zornes 9 11 6 8 0.5000 4 0.5312 0.5312
Randy Dick 11 7 8 8 0.5000 4 0.5312 0.5312
Cheryl Brown 11 6 9 8 0.5000 4 0.5312 0.5312
David Plate 10 8 8 8 0.5000 4 0.5312 0.5312
Cade Martinez 10 7 8 8 0.5000 4 0.5156 0.5156
Joseph Martin 10 7 8 8 0.5000 4 0.5156 0.5156
Nicholas Nguyen 11 8 5 8 0.5000 4 0.5000 0.5000
Robert Martin 7 NA 9 8 0.5000 3 0.5000 0.3750
Brian Hollmann NA NA NA 8 0.5000 1 0.5000 0.1250
Thomas Mccoy 10 7 6 8 0.5000 4 0.4844 0.4844
Richard Conkle 7 6 6 8 0.5000 4 0.4219 0.4219
Jennifer Bouland 13 8 10 7 0.4375 4 0.5938 0.5938
Diance Durand 9 9 12 7 0.4375 4 0.5781 0.5781
Rafael Torres 12 9 8 7 0.4375 4 0.5625 0.5625
George Brown 14 7 8 7 0.4375 4 0.5625 0.5625
Yiming Hu 12 NA 7 7 0.4375 3 0.5417 0.4063
Terry Hardison 13 8 6 7 0.4375 4 0.5312 0.5312
Jennifer Arty 10 7 9 7 0.4375 4 0.5156 0.5156
Scott Lefton 10 8 8 7 0.4375 4 0.5156 0.5156
Jay Kelly 10 9 7 7 0.4375 4 0.5156 0.5156
Vincent Kandian 9 8 8 7 0.4375 4 0.5000 0.5000
Michael Moore 11 6 7 7 0.4375 4 0.4844 0.4844
Montee Brown 10 6 8 7 0.4375 4 0.4844 0.4844
Andrew Gray 5 8 9 7 0.4375 4 0.4531 0.4531
Jonathan Knight 13 10 9 6 0.3750 4 0.5938 0.5938
Jennifer Wilson 11 9 10 6 0.3750 4 0.5625 0.5625
Rachel Follo 15 8 6 6 0.3750 4 0.5469 0.5469
Daniel Major 8 10 11 6 0.3750 4 0.5469 0.5469
Melissa Printup 8 9 9 6 0.3750 4 0.5000 0.5000
Joshua Tracey 12 5 8 6 0.3750 4 0.4844 0.4844
Thomas Brenstuhl 9 8 NA 6 0.3750 3 0.4792 0.3594
Jason Jackson 12 7 5 6 0.3750 4 0.4688 0.4688
Steven Webster 7 7 9 6 0.3750 4 0.4531 0.4531
Robert Lynch 6 9 8 6 0.3750 4 0.4531 0.4531
Kyle May 10 8 5 6 0.3750 4 0.4531 0.4531
Kamar Morgan 12 6 8 5 0.3125 4 0.4844 0.4844
Wayne Schofield 7 5 9 5 0.3125 4 0.4062 0.4062
Gary Lawrence 10 6 5 5 0.3125 4 0.4062 0.4062
Louie Renew 9 8 12 4 0.2500 4 0.5156 0.5156
Clayton Grimes 14 NA NA NA 0.0000 1 0.8750 0.2188
Wallace Savage 12 NA NA NA 0.0000 1 0.7500 0.1875
Brian Holder 12 NA NA NA 0.0000 1 0.7500 0.1875
Sandra Carter 12 NA NA NA 0.0000 1 0.7500 0.1875
Jeremy Krammes 12 NA NA NA 0.0000 1 0.7500 0.1875
Terrence Lee 11 NA NA NA 0.0000 1 0.6875 0.1719
Daniel Gray 11 NA NA NA 0.0000 1 0.6875 0.1719
Pamela Augustine 14 9 9 NA 0.0000 3 0.6667 0.5000
David Hadley 13 10 8 NA 0.0000 3 0.6458 0.4844
George Hall 12 NA 8 NA 0.0000 2 0.6250 0.3125
Nicholas Cinco 12 8 NA NA 0.0000 2 0.6250 0.3125
Clevante Granville 9 11 NA NA 0.0000 2 0.6250 0.3125
Michael Linder 11 9 9 NA 0.0000 3 0.6042 0.4531
Paul Seitz 11 9 9 NA 0.0000 3 0.6042 0.4531
Jeffrey Dusza 11 8 NA NA 0.0000 2 0.5938 0.2969
Adam Konkle 10 9 NA NA 0.0000 2 0.5938 0.2969
Jeremy Mounce 12 8 8 NA 0.0000 3 0.5833 0.4375
Kenneth Nielsen 13 8 7 NA 0.0000 3 0.5833 0.4375
Robert Sokol 10 8 NA NA 0.0000 2 0.5625 0.2812
Steward Hogans 10 7 10 NA 0.0000 3 0.5625 0.4219
Sheryl Claiborne-Smith 11 7 NA NA 0.0000 2 0.5625 0.2812
Lawrence Thuotte 9 5 12 NA 0.0000 3 0.5417 0.4063
Bryson Scott 10 9 7 NA 0.0000 3 0.5417 0.4063
Min Choi 10 NA 7 NA 0.0000 2 0.5312 0.2656
Monte Henderson 9 8 NA NA 0.0000 2 0.5312 0.2656
David Kim 9 8 NA NA 0.0000 2 0.5312 0.2656
George Mancini 11 8 6 NA 0.0000 3 0.5208 0.3906
Jason Miranda 10 7 8 NA 0.0000 3 0.5208 0.3906
Zachary Brosemer 8 NA NA NA 0.0000 1 0.5000 0.1250
Antonio Chapa 8 NA NA NA 0.0000 1 0.5000 0.1250
Desmond Jenkins 10 7 7 NA 0.0000 3 0.5000 0.3750
Ashley Johnson 9 NA 6 NA 0.0000 2 0.4688 0.2344
Donald Park 9 NA 6 NA 0.0000 2 0.4688 0.2344
Gabrieal Feiling 10 NA 5 NA 0.0000 2 0.4688 0.2344
Jasprin Smith 6 NA NA NA 0.0000 1 0.3750 0.0938
Robert Epps NA 6 NA NA 0.0000 1 0.3750 0.0938

Season Leaderboard

Season Leaderboard (Season Percent)
Week 4
Season Rank Name Donuts Won Weeks Picked Season Percent Adj Season Percent Season Trend
1 Clayton Grimes 0 1 0.8750 0.2188
2 Brian Holder 0 1 0.7500 0.1875
2 Jeremy Krammes 0 1 0.7500 0.1875
2 Sandra Carter 0 1 0.7500 0.1875
2 Wallace Savage 0 1 0.7500 0.1875
6 Robert Cunningham 0 4 0.7031 0.7031
7 Daniel Gray 0 1 0.6875 0.1719
7 Terrence Lee 0 1 0.6875 0.1719
9 Chris Papageorge 0 4 0.6719 0.6719
9 Marc Agne 1 4 0.6719 0.6719
11 Pamela Augustine 0 3 0.6667 0.5000
12 David Hadley 0 3 0.6458 0.4844
12 Heather Kohler 0 3 0.6458 0.4844
12 James Small 0 3 0.6458 0.4844
12 Wayne Gokey 0 3 0.6458 0.4844
16 Derrick Elam 0 4 0.6406 0.6406
16 Jeffrey Rudderforth 0 4 0.6406 0.6406
16 Nathan Brown 0 4 0.6406 0.6406
16 Paul Presti 0 4 0.6406 0.6406
16 Shaun Dahl 0 4 0.6406 0.6406
16 Travis Delagardelle 1 4 0.6406 0.6406
22 Akilah Gamble 1 3 0.6250 0.4688
22 Anthony Bloss 0 4 0.6250 0.6250
22 Bruce Williams 0 4 0.6250 0.6250
22 Clevante Granville 0 2 0.6250 0.3125
22 David Dupree 0 4 0.6250 0.6250
22 George Hall 0 2 0.6250 0.3125
22 Karen Coleman 0 3 0.6250 0.4688
22 Matthew Schultz 0 4 0.6250 0.6250
22 Nicholas Cinco 0 2 0.6250 0.3125
22 Robert Gelo 0 4 0.6250 0.6250
32 Aubrey Conn 0 4 0.6094 0.6094
32 Bradley Hobson 0 4 0.6094 0.6094
32 Kevin Kehoe 0 4 0.6094 0.6094
32 Kristen White 0 4 0.6094 0.6094
32 Shawn Carden 0 4 0.6094 0.6094
37 Michael Linder 0 3 0.6042 0.4531
37 Paul Seitz 0 3 0.6042 0.4531
39 Adam Konkle 0 2 0.5938 0.2969
39 Cherylynn Vidal 0 4 0.5938 0.5938
39 Christopher Sims 0 4 0.5938 0.5938
39 David Humes 0 4 0.5938 0.5938
39 Erik Neumann 0 4 0.5938 0.5938
39 George Sweet 0 4 0.5938 0.5938
39 Jeffrey Dusza 0 2 0.5938 0.2969
39 Jennifer Bouland 0 4 0.5938 0.5938
39 Jonathan Knight 0 4 0.5938 0.5938
39 Kevin Buettner 0 4 0.5938 0.5938
39 Megan Fitzgerald 0 4 0.5938 0.5938
39 Nicole Dike 0 4 0.5938 0.5938
39 Randolph Tidd 0 4 0.5938 0.5938
39 Ryan Cvik 0 4 0.5938 0.5938
53 Jeremy Mounce 0 3 0.5833 0.4375
53 Kenneth Nielsen 0 3 0.5833 0.4375
53 Kevin Green 0 3 0.5833 0.4375
56 Chester Todd 0 4 0.5781 0.5781
56 Daniel Baller 0 4 0.5781 0.5781
56 Diance Durand 1 4 0.5781 0.5781
56 Gregory Brown 1 4 0.5781 0.5781
56 Jared Kaanga 0 4 0.5781 0.5781
56 Jeremy Stieler 0 4 0.5781 0.5781
56 Keven Talbert 0 4 0.5781 0.5781
56 Michael Moss 0 4 0.5781 0.5781
56 Michael Pacifico 0 4 0.5781 0.5781
56 Michelle Fraterrigo 0 4 0.5781 0.5781
56 Nahir Shepard 0 4 0.5781 0.5781
56 Philip Driskill 0 4 0.5781 0.5781
56 Ryan Baum 0 4 0.5781 0.5781
56 Trevor Macgavin 0 4 0.5781 0.5781
56 William Schouviller 0 4 0.5781 0.5781
71 Anthony Brinson 0 3 0.5625 0.4219
71 Brandon Parks 0 4 0.5625 0.5625
71 Bunnaro Sun 0 4 0.5625 0.5625
71 Daniel Halse 0 4 0.5625 0.5625
71 Darryle Sellers 0 4 0.5625 0.5625
71 George Brown 0 4 0.5625 0.5625
71 Heather Ellenberger 0 4 0.5625 0.5625
71 Jennifer Wilson 0 4 0.5625 0.5625
71 Jordan Forwood 0 4 0.5625 0.5625
71 Jose Torres Mendoza 0 4 0.5625 0.5625
71 Marcus Evans 0 3 0.5625 0.4219
71 Matthew Olguin 0 4 0.5625 0.5625
71 Patrick Tynan 0 4 0.5625 0.5625
71 Rafael Torres 0 4 0.5625 0.5625
71 Ramar Williams 0 4 0.5625 0.5625
71 Robert Sokol 0 2 0.5625 0.2812
71 Sheryl Claiborne-Smith 0 2 0.5625 0.2812
71 Steward Hogans 0 3 0.5625 0.4219
71 Thomas Cho 0 3 0.5625 0.4219
71 Vincent Scannelli 0 4 0.5625 0.5625
91 Amy Asberry 0 4 0.5469 0.5469
91 Anthony Rockemore 0 4 0.5469 0.5469
91 Antonio Mitchell 0 4 0.5469 0.5469
91 Brayant Rivera 0 4 0.5469 0.5469
91 Brian Patterson 0 4 0.5469 0.5469
91 Christopher Mulcahy 0 4 0.5469 0.5469
91 Daniel Major 0 4 0.5469 0.5469
91 Jamie Ainsleigh-Wong 0 4 0.5469 0.5469
91 Jason Schattel 0 4 0.5469 0.5469
91 Jonathon Leslein 0 4 0.5469 0.5469
91 Karen Richardson 0 4 0.5469 0.5469
91 Rachel Follo 1 4 0.5469 0.5469
91 Richard Beeghley 0 4 0.5469 0.5469
91 Ryan Shipley 0 4 0.5469 0.5469
91 Tara Bridgett 0 4 0.5469 0.5469
106 Bryson Scott 0 3 0.5417 0.4063
106 Lawrence Thuotte 1 3 0.5417 0.4063
106 Yiming Hu 0 3 0.5417 0.4063
109 Ashlyn Dortch 0 2 0.5312 0.2656
109 Cheryl Brown 0 4 0.5312 0.5312
109 Darvin Graham 0 4 0.5312 0.5312
109 David Kim 0 2 0.5312 0.2656
109 David Plate 0 4 0.5312 0.5312
109 Earl Dixon 0 4 0.5312 0.5312
109 Jeffrey Zornes 0 4 0.5312 0.5312
109 Michael Branson 0 4 0.5312 0.5312
109 Min Choi 0 2 0.5312 0.2656
109 Monte Henderson 0 2 0.5312 0.2656
109 Randy Dick 0 4 0.5312 0.5312
109 Ronald Schmidt 0 4 0.5312 0.5312
109 Terry Hardison 0 4 0.5312 0.5312
109 Zechariah Ziebarth 0 4 0.5312 0.5312
123 George Mancini 0 3 0.5208 0.3906
123 Jason Miranda 0 3 0.5208 0.3906
123 Jonathan Smith 0 3 0.5208 0.3906
123 Noah Gosswiller 0 3 0.5208 0.3906
127 Cade Martinez 0 4 0.5156 0.5156
127 Jay Kelly 0 4 0.5156 0.5156
127 Jennifer Arty 0 4 0.5156 0.5156
127 Joseph Martin 0 4 0.5156 0.5156
127 Keisha Vasquez 0 4 0.5156 0.5156
127 Louie Renew 1 4 0.5156 0.5156
127 Scott Lefton 0 4 0.5156 0.5156
134 Antonio Chapa 0 1 0.5000 0.1250
134 Brian Hollmann 0 1 0.5000 0.1250
134 Desmond Jenkins 0 3 0.5000 0.3750
134 Edward Ford 0 4 0.5000 0.5000
134 Gabriel Quinones 0 4 0.5000 0.5000
134 Melissa Printup 0 4 0.5000 0.5000
134 Nicholas Nguyen 0 4 0.5000 0.5000
134 Robert Martin 0 3 0.5000 0.3750
134 Vincent Kandian 0 4 0.5000 0.5000
134 Walter Archambo 0 4 0.5000 0.5000
134 Zachary Brosemer 0 1 0.5000 0.1250
145 Joshua Tracey 0 4 0.4844 0.4844
145 Kamar Morgan 0 4 0.4844 0.4844
145 Michael Moore 0 4 0.4844 0.4844
145 Montee Brown 0 4 0.4844 0.4844
145 Pablo Burgosramos 0 4 0.4844 0.4844
145 Thomas Mccoy 0 4 0.4844 0.4844
151 Thomas Brenstuhl 0 3 0.4792 0.3594
152 Ashley Johnson 0 2 0.4688 0.2344
152 Donald Park 0 2 0.4688 0.2344
152 Gabrieal Feiling 0 2 0.4688 0.2344
152 Jack Wheeler 0 4 0.4688 0.4688
152 Jason Jackson 0 4 0.4688 0.4688
152 Stephen Bush 0 4 0.4688 0.4688
158 Andrew Gray 0 4 0.4531 0.4531
158 Kyle May 0 4 0.4531 0.4531
158 Robert Lynch 0 4 0.4531 0.4531
158 Steven Webster 0 4 0.4531 0.4531
162 Richard Conkle 0 4 0.4219 0.4219
163 Gary Lawrence 0 4 0.4062 0.4062
163 Wayne Schofield 0 4 0.4062 0.4062
165 Jasprin Smith 0 1 0.3750 0.0938
165 Robert Epps 0 1 0.3750 0.0938

Adjusted Season Leaderboard

Season Leaderboard (Adjusted Season Percent)
Week 4
Season Rank Name Donuts Won Weeks Picked Season Percent Adj Season Percent Season Trend
1 Robert Cunningham 0 4 0.7031 0.7031
2 Chris Papageorge 0 4 0.6719 0.6719
2 Marc Agne 1 4 0.6719 0.6719
4 Derrick Elam 0 4 0.6406 0.6406
4 Jeffrey Rudderforth 0 4 0.6406 0.6406
4 Nathan Brown 0 4 0.6406 0.6406
4 Paul Presti 0 4 0.6406 0.6406
4 Shaun Dahl 0 4 0.6406 0.6406
4 Travis Delagardelle 1 4 0.6406 0.6406
10 Anthony Bloss 0 4 0.6250 0.6250
10 Bruce Williams 0 4 0.6250 0.6250
10 David Dupree 0 4 0.6250 0.6250
10 Matthew Schultz 0 4 0.6250 0.6250
10 Robert Gelo 0 4 0.6250 0.6250
15 Aubrey Conn 0 4 0.6094 0.6094
15 Bradley Hobson 0 4 0.6094 0.6094
15 Kevin Kehoe 0 4 0.6094 0.6094
15 Kristen White 0 4 0.6094 0.6094
15 Shawn Carden 0 4 0.6094 0.6094
20 Cherylynn Vidal 0 4 0.5938 0.5938
20 Christopher Sims 0 4 0.5938 0.5938
20 David Humes 0 4 0.5938 0.5938
20 Erik Neumann 0 4 0.5938 0.5938
20 George Sweet 0 4 0.5938 0.5938
20 Jennifer Bouland 0 4 0.5938 0.5938
20 Jonathan Knight 0 4 0.5938 0.5938
20 Kevin Buettner 0 4 0.5938 0.5938
20 Megan Fitzgerald 0 4 0.5938 0.5938
20 Nicole Dike 0 4 0.5938 0.5938
20 Randolph Tidd 0 4 0.5938 0.5938
20 Ryan Cvik 0 4 0.5938 0.5938
32 Chester Todd 0 4 0.5781 0.5781
32 Daniel Baller 0 4 0.5781 0.5781
32 Diance Durand 1 4 0.5781 0.5781
32 Gregory Brown 1 4 0.5781 0.5781
32 Jared Kaanga 0 4 0.5781 0.5781
32 Jeremy Stieler 0 4 0.5781 0.5781
32 Keven Talbert 0 4 0.5781 0.5781
32 Michael Moss 0 4 0.5781 0.5781
32 Michael Pacifico 0 4 0.5781 0.5781
32 Michelle Fraterrigo 0 4 0.5781 0.5781
32 Nahir Shepard 0 4 0.5781 0.5781
32 Philip Driskill 0 4 0.5781 0.5781
32 Ryan Baum 0 4 0.5781 0.5781
32 Trevor Macgavin 0 4 0.5781 0.5781
32 William Schouviller 0 4 0.5781 0.5781
47 Brandon Parks 0 4 0.5625 0.5625
47 Bunnaro Sun 0 4 0.5625 0.5625
47 Daniel Halse 0 4 0.5625 0.5625
47 Darryle Sellers 0 4 0.5625 0.5625
47 George Brown 0 4 0.5625 0.5625
47 Heather Ellenberger 0 4 0.5625 0.5625
47 Jennifer Wilson 0 4 0.5625 0.5625
47 Jordan Forwood 0 4 0.5625 0.5625
47 Jose Torres Mendoza 0 4 0.5625 0.5625
47 Matthew Olguin 0 4 0.5625 0.5625
47 Patrick Tynan 0 4 0.5625 0.5625
47 Rafael Torres 0 4 0.5625 0.5625
47 Ramar Williams 0 4 0.5625 0.5625
47 Vincent Scannelli 0 4 0.5625 0.5625
61 Amy Asberry 0 4 0.5469 0.5469
61 Anthony Rockemore 0 4 0.5469 0.5469
61 Antonio Mitchell 0 4 0.5469 0.5469
61 Brayant Rivera 0 4 0.5469 0.5469
61 Brian Patterson 0 4 0.5469 0.5469
61 Christopher Mulcahy 0 4 0.5469 0.5469
61 Daniel Major 0 4 0.5469 0.5469
61 Jamie Ainsleigh-Wong 0 4 0.5469 0.5469
61 Jason Schattel 0 4 0.5469 0.5469
61 Jonathon Leslein 0 4 0.5469 0.5469
61 Karen Richardson 0 4 0.5469 0.5469
61 Rachel Follo 1 4 0.5469 0.5469
61 Richard Beeghley 0 4 0.5469 0.5469
61 Ryan Shipley 0 4 0.5469 0.5469
61 Tara Bridgett 0 4 0.5469 0.5469
76 Cheryl Brown 0 4 0.5312 0.5312
76 Darvin Graham 0 4 0.5312 0.5312
76 David Plate 0 4 0.5312 0.5312
76 Earl Dixon 0 4 0.5312 0.5312
76 Jeffrey Zornes 0 4 0.5312 0.5312
76 Michael Branson 0 4 0.5312 0.5312
76 Randy Dick 0 4 0.5312 0.5312
76 Ronald Schmidt 0 4 0.5312 0.5312
76 Terry Hardison 0 4 0.5312 0.5312
76 Zechariah Ziebarth 0 4 0.5312 0.5312
86 Cade Martinez 0 4 0.5156 0.5156
86 Jay Kelly 0 4 0.5156 0.5156
86 Jennifer Arty 0 4 0.5156 0.5156
86 Joseph Martin 0 4 0.5156 0.5156
86 Keisha Vasquez 0 4 0.5156 0.5156
86 Louie Renew 1 4 0.5156 0.5156
86 Scott Lefton 0 4 0.5156 0.5156
93 Edward Ford 0 4 0.5000 0.5000
93 Gabriel Quinones 0 4 0.5000 0.5000
93 Melissa Printup 0 4 0.5000 0.5000
93 Nicholas Nguyen 0 4 0.5000 0.5000
93 Pamela Augustine 0 3 0.6667 0.5000
93 Vincent Kandian 0 4 0.5000 0.5000
93 Walter Archambo 0 4 0.5000 0.5000
100 David Hadley 0 3 0.6458 0.4844
100 Heather Kohler 0 3 0.6458 0.4844
100 James Small 0 3 0.6458 0.4844
100 Joshua Tracey 0 4 0.4844 0.4844
100 Kamar Morgan 0 4 0.4844 0.4844
100 Michael Moore 0 4 0.4844 0.4844
100 Montee Brown 0 4 0.4844 0.4844
100 Pablo Burgosramos 0 4 0.4844 0.4844
100 Thomas Mccoy 0 4 0.4844 0.4844
100 Wayne Gokey 0 3 0.6458 0.4844
110 Akilah Gamble 1 3 0.6250 0.4688
110 Jack Wheeler 0 4 0.4688 0.4688
110 Jason Jackson 0 4 0.4688 0.4688
110 Karen Coleman 0 3 0.6250 0.4688
110 Stephen Bush 0 4 0.4688 0.4688
115 Andrew Gray 0 4 0.4531 0.4531
115 Kyle May 0 4 0.4531 0.4531
115 Michael Linder 0 3 0.6042 0.4531
115 Paul Seitz 0 3 0.6042 0.4531
115 Robert Lynch 0 4 0.4531 0.4531
115 Steven Webster 0 4 0.4531 0.4531
121 Jeremy Mounce 0 3 0.5833 0.4375
121 Kenneth Nielsen 0 3 0.5833 0.4375
121 Kevin Green 0 3 0.5833 0.4375
124 Anthony Brinson 0 3 0.5625 0.4219
124 Marcus Evans 0 3 0.5625 0.4219
124 Richard Conkle 0 4 0.4219 0.4219
124 Steward Hogans 0 3 0.5625 0.4219
124 Thomas Cho 0 3 0.5625 0.4219
129 Bryson Scott 0 3 0.5417 0.4063
129 Lawrence Thuotte 1 3 0.5417 0.4063
129 Yiming Hu 0 3 0.5417 0.4063
132 Gary Lawrence 0 4 0.4062 0.4062
132 Wayne Schofield 0 4 0.4062 0.4062
134 George Mancini 0 3 0.5208 0.3906
134 Jason Miranda 0 3 0.5208 0.3906
134 Jonathan Smith 0 3 0.5208 0.3906
134 Noah Gosswiller 0 3 0.5208 0.3906
138 Desmond Jenkins 0 3 0.5000 0.3750
138 Robert Martin 0 3 0.5000 0.3750
140 Thomas Brenstuhl 0 3 0.4792 0.3594
141 Clevante Granville 0 2 0.6250 0.3125
141 George Hall 0 2 0.6250 0.3125
141 Nicholas Cinco 0 2 0.6250 0.3125
144 Adam Konkle 0 2 0.5938 0.2969
144 Jeffrey Dusza 0 2 0.5938 0.2969
146 Robert Sokol 0 2 0.5625 0.2812
146 Sheryl Claiborne-Smith 0 2 0.5625 0.2812
148 Ashlyn Dortch 0 2 0.5312 0.2656
148 David Kim 0 2 0.5312 0.2656
148 Min Choi 0 2 0.5312 0.2656
148 Monte Henderson 0 2 0.5312 0.2656
152 Ashley Johnson 0 2 0.4688 0.2344
152 Donald Park 0 2 0.4688 0.2344
152 Gabrieal Feiling 0 2 0.4688 0.2344
155 Clayton Grimes 0 1 0.8750 0.2188
156 Brian Holder 0 1 0.7500 0.1875
156 Jeremy Krammes 0 1 0.7500 0.1875
156 Sandra Carter 0 1 0.7500 0.1875
156 Wallace Savage 0 1 0.7500 0.1875
160 Daniel Gray 0 1 0.6875 0.1719
160 Terrence Lee 0 1 0.6875 0.1719
162 Antonio Chapa 0 1 0.5000 0.1250
162 Brian Hollmann 0 1 0.5000 0.1250
162 Zachary Brosemer 0 1 0.5000 0.1250
165 Jasprin Smith 0 1 0.3750 0.0938
165 Robert Epps 0 1 0.3750 0.0938

Data

---
title: "2024 NFL Moneyline Picks"
output: 
  flexdashboard::flex_dashboard:
    theme:
      version: 4
      bootswatch: spacelab
    orientation: rows
    vertical_layout: fill
    social: ["menu"]
    source_code: embed
    navbar:
      - { title: "Created by: Daniel Baller", icon: "fa-github", href: "https://github.com/danielpballer"  }
---


```{r setup, include=FALSE}
#    source_code: embed
library(flexdashboard)
library(tidyverse)
library(data.table)
library(formattable)
library(ggpubr)
library(ggrepel)
library(gt)
library(glue)
library(ggthemes)
library(hrbrthemes)
library(sparkline)
library(plotly)
library(htmlwidgets)
library(mdthemes)
library(ggtext)
library(ggnewscale)
library(DT)
source("./Functions/functions2.R")

thematic::thematic_rmd(font = "auto")

```

```{r Reading in our picks files, include=FALSE}
current_week = 4 #Set what week it is
week_1 = read_csv("./CSV_Data_Files/2024 NFL Week 1.csv") %>% 
  mutate(Name = str_to_title(Name))
week_2 = read_csv("./CSV_Data_Files/2024 NFL Week 2.csv")%>% 
  mutate(Name = str_to_title(Name))
week_3 = read_csv("./CSV_Data_Files/2024 NFL Week 3.csv")%>% 
  mutate(Name = str_to_title(Name))
week_4 = read_csv("./CSV_Data_Files/2024 NFL Week 4.csv")%>%
 mutate(Name = str_to_title(Name))
# week_5 = read_csv("./CSV_Data_Files/2024 NFL Week 5.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_6 = read_csv("./CSV_Data_Files/2024 NFL Week 6.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_7 = read_csv("./CSV_Data_Files/2024 NFL Week 7.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_8 = read_csv("./CSV_Data_Files/2024 NFL Week 8.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_9 = read_csv("./CSV_Data_Files/2024 NFL Week 9.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_10 = read_csv("./CSV_Data_Files/2024 NFL Week 10.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_11 = read_csv("./CSV_Data_Files/2024 NFL Week 11.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_12 = read_csv("./CSV_Data_Files/2024 NFL Week 12.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_13 = read_csv("./CSV_Data_Files/2024 NFL Week 13.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_14 = read_csv("./CSV_Data_Files/2024 NFL Week 14.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_15 = read_csv("./CSV_Data_Files/2024 NFL Week 15.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_16 = read_csv("./CSV_Data_Files/2024 NFL Week 16.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_17 = read_csv("./CSV_Data_Files/2024 NFL Week 17.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_18 = read_csv("./CSV_Data_Files/2024 NFL Week 18.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_19 = read_csv("./CSV_Data_Files/2024 NFL Wild Card.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_20 = read_csv("./CSV_Data_Files/2024 NFL Divisional Round.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_21 = read_csv("./CSV_Data_Files/2024 NFL Conference Round.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_22 = read_csv("./CSV_Data_Files/2024 NFL Super Bowl.csv")%>% 
#  mutate(Name = str_to_title(Name))

#reading in scores
Scores = read_csv(glue::glue("./CSV_Data_Files/NFL_Scores_{current_week}.csv")) 

#reading in CBS Prediction Records
cbs = read_csv(glue::glue("./CSV_Data_Files/CBS_Experts_{current_week}.csv")) %>% 
  mutate(Percent = round(Percent,4))
cbs_season = read_csv(glue::glue("./CSV_Data_Files/CBS_Experts_Season_{current_week}.csv"))

#reading in ESPN Prediction Records
espn = read_csv(glue::glue("./CSV_Data_Files/ESPN_Experts_{current_week}.csv"))%>% 
  mutate(Percent = round(Percent,4))
espn_season = read_csv(glue::glue("./CSV_Data_Files/ESPN_Experts_Season_{current_week}.csv"))%>% 
  mutate(Percent = round(Percent,4))

#Odds not working for the 2024 season.  Need to fix scrape code for next year.
#Reading in the moneyline odds for each team and cleaning the team names
# odds_wk1 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_1.csv"))
# odds_wk2 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_2.csv"))
# odds_wk3 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_3.csv"))
# odds_wk4 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_4.csv"))
# odds_wk5 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_5.csv"))
# odds_wk6 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_6.csv"))
# odds_wk7 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_7.csv"))
# odds_wk8 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_8.csv"))
# odds_wk9 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_9.csv"))
# odds_wk10 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_10.csv"))
# odds_wk11 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_11.csv"))
# odds_wk12 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_12.csv"))
# odds_wk13 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_13.csv"))
# odds_wk14 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_14.csv"))
# odds_wk15 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_15.csv"))
# odds_wk16 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_16.csv"))
# odds_wk17 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_17.csv"))
# odds_wk18 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_18.csv"))
# odds_wk19 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_19.csv"))
# odds_wk20 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_20.csv"))
# odds_wk21 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_21.csv"))
# odds_wk22 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_22.csv"))

####################UPDATE THESE###############################
inst.picks = list(week_1, week_2, week_3, week_4) #, week_5, week_6, week_7, week_8, week_9, week_10, week_11, week_12, week_13, week_14, week_15, week_16, week_17 , week_18, week_19 , week_20, week_21, week_22) #add in the additional weeks
# odds = rbind(odds_wk1, odds_wk2, odds_wk3, odds_wk4, odds_wk5, odds_wk6, odds_wk7, odds_wk8,
#              odds_wk9, odds_wk10, odds_wk11, odds_wk12) #add in the additional weeks
####################END OF UPDATE##############################

weeks = as.list(seq(1:current_week)) #creating a list of each week number
```

```{r read in scores clean data, include=FALSE}
#Cleaning Odds Data
# cl_odds = odds_cleaning(odds)

#Cleaning scores data
Scores = cleaning2(Scores)

#creating a list of winners for each week
winners = map(weeks, weekly_winners)

#creating a vector of this weeks winners
this_week = pull(winners[[length(winners)]])  

#Getting the number of games for each week
weekly_number_of_games = map_dbl(weeks, week_number_games)
```

```{r Group Predictions, include=FALSE}
#Creating the list of everyones predictions each week.
games = map(inst.picks, games_fn)

#Creating the prediction table.  
pred_table = map(games, pred_table_fn)

#Adding who won to the predictions
with_winners = map2(pred_table, winners, adding_winners)

#Creating results for each week.
results = map2(with_winners,weekly_number_of_games, results_fn)
```


```{r Displaying Group Results, echo=FALSE}
#Displaying the group results

inst_group_table = results[[length(results)]] %>% gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("This Week's Predictions"),
    #subtitle = md(glue("Week {length(results)}"))
    ) %>% 
   tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(Correct),
      rows = Correct =="No"
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(Correct),
      rows = Correct =="Yes"
    )) %>% 
  tab_options(
    data_row.padding = px(3),
    container.height = "100%"
   )
```

```{r Weekly and season Group Results, include=FALSE}
# Printing the weekly and season win percentage     

#how many games correct, incorrect, and not picked each week
weekly_group_correct = map(results, weekly_group_correct_fn)  

#how many games were picked each week
weekly_games_picked = map2(weekly_group_correct, weekly_number_of_games, weekly_games_picked_fn)

#Calculating the number of correct picks for each week
weekly_group_correct_picks = map(weekly_group_correct, weekly_group_correct_picks_fn)

# Code to manually hard code in week where we get 0 games correct
# ##### Remove this line before next season 
# weekly_group_correct_picks[[21]]=0

#Calculating weekly win percentage
weekly_win_percentage = map2(weekly_group_correct_picks, weekly_games_picked, weekly_win_percentage_fn)

#Calculating season win percentage
season_win_percentage = round(sum(unlist(weekly_group_correct_picks))/sum(unlist(weekly_games_picked)),4)

#Calculating number of games picked this season
season_games = sum(unlist(weekly_games_picked))

#calculating season wins
season_wins = sum(unlist(weekly_group_correct_picks))

#calculating the number of people who picked this week
Total = dim(inst.picks[[length(weeks)]])[1]
```

```{r plotting group results, include=FALSE}
#Previous Weeks
group_season_for_plotting = unlist(weekly_win_percentage) %>% as.data.frame() %>% 
  rename(`Win Percentage` = ".") %>% 
  add_column(Week = unlist(weeks))
```

```{r Plotting the group results, echo=FALSE}
inst_group_season_plot = group_season_for_plotting %>% 
ggplot(aes(x = as.factor(Week), y = `Win Percentage`))+
  geom_point()+
  geom_path(aes(x = Week))+
  ylim(c(0, 1)) +
  xlab("NFL Week") + 
  ylab("Correct Percentage")+
  ggtitle("Weekly Group Correct Percentage")+
  theme_classic()+
  theme(plot.title = element_text(hjust = 0.5, size = 18))
```

```{r beating cbs week, include=FALSE}
#Creating a list of correct percentages for each week.
cbs_weekly_percent = map(weeks, cbs_percent)

#Creating a list of how many cbs experts we beat each week.
cbs_experts_beat = map2(cbs_weekly_percent, weekly_win_percentage, experts_beat)

#Creating a list of how many cbs experts picked each week.  
cbs_experts_total = map(cbs_weekly_percent, experts_tot)
```

```{r beating cbs season, include=FALSE}
#Creating a list of correct percentages for each week.
cbs_season_percent = map(weeks, cbs_season_percent)

#Creating a list of how many cbs experts we beat each week.
cbs_experts_beat_season = map2(cbs_season_percent, season_win_percentage, experts_beat)

#Creating a list of how many cbs experts picked each week.  
cbs_experts_season_total = map(cbs_season_percent, experts_tot)
```

```{r beating ESPN week, include=FALSE}
#Creating a list of correct percentages for each week.
espn_weekly_percent = map(weeks, espn_percent)

#Creating a list of how many cbs experts we beat each week.
espn_experts_beat = map2(espn_weekly_percent, weekly_win_percentage, experts_beat)

#Creating a list of how many cbs experts picked each week.  
espn_experts_total = map(espn_weekly_percent, experts_tot)
```

```{r beating ESPN season, include=FALSE}
#Creating a list of correct percentages for each week.
espn_season_percent = map(weeks, espn_season_percent)

#Creating a list of how many cbs experts we beat each week.
espn_experts_beat_season = map2(espn_season_percent, season_win_percentage, experts_beat)

#Creating a list of how many cbs experts picked each week.  
espn_experts_season_total = map(espn_season_percent, experts_tot)
```

```{r individual results, include=FALSE}
#Creating a list of individual results for each week.
weekly_indiv = pmap(list(inst.picks, winners, weeks), indiv_weekly_pred)

#Combining each week into one dataframe and calculating percentage Correct for this week.  
full_season = weekly_indiv %>% reduce(full_join, by = "Name") %>% 
  mutate(Percent = round(pull(.[,ncol(.)]/weekly_number_of_games[[length(weekly_number_of_games)]]),4)) 

#Creating a dataframe with only the weekly picks
a = full_season %>% select(starts_with("Week"))

#Creating a vector of how many weeks each person picked over the season
tot_week = NULL
help = NULL
for (i in 1:dim(a)[1]){
  for(j in 1:length(a)){
    help[j] = ifelse(is.na(a[i,j])==T,0,1)
    tot_week[i] = sum(help)
  }
}

#Creating a vector of how many games each person picked over the season
tot_picks= NULL
help = NULL
for (i in 1:dim(a)[1]){
  for(j in 1:length(a)){
    help[j] = unlist(weekly_games_picked)[j]*ifelse(is.na(a[i,j])==T,0,1)
    tot_picks[i] = sum(help)
  }
}

#Creatign a vector of how many games each person picked correct over the season
tot_correct = NULL
help = NULL
for (i in 1:dim(a)[1]){
  tot_correct[i] = sum(a[i,], na.rm = T)
}

#adding how many weeks each person picked, season correct percentage, and adjusted season percentag to the data frame and sorting the data
indiv_disp = full_season %>% add_column(`Weeks Picked` = tot_week) %>%
  add_column(tot_correct)%>%
  add_column(tot_picks)%>%
  mutate(`Season Percent` = round(tot_correct/tot_picks,4))%>%
  mutate(`Adj Season Percent` = round(`Season Percent`*(tot_week/length(a)),4)) %>%
  select(-tot_correct, -tot_picks) %>%
  arrange(desc(Percent), desc(`Season Percent`)) %>%
  mutate(Percent = ifelse(is.na(Percent)==T, 0, Percent))
```


```{r individual percentages, include=FALSE}
#Calculating individual percentages for each week.
weekly_indiv_percent = map2(weekly_indiv, as.list(weekly_number_of_games), indiv_percent) %>% reduce(full_join, by = "Name")

weekly_indiv_percent_plot = weekly_indiv_percent %>% 
  pivot_longer(cols = starts_with("Week"), names_to = "Week", values_to = "Percent")%>%
  mutate(Percent = ifelse(is.na(Percent)==T, 0, Percent)) %>% 
  mutate(Week = as.factor(Week))

levels = NULL
for(i in 1:length(weeks)){
  levels[i] = glue("Week {i}")  
}

weekly_indiv_percent_plot = weekly_indiv_percent_plot %>%
  mutate(Week = factor(Week, levels))
```

```{r sparklines, include=FALSE}
#adding sparklines
plot_group = function(name, df){
  plot_object = 
    ggplot(data = df,
           aes(x = as.factor(Week), y=Percent, group = 1))+
    geom_path(size = 7)+
    scale_y_continuous(limits = c(0,1))+
    theme_void()+
    theme(legend.position = "none")
  return(plot_object)
}

sparklines = 
  weekly_indiv_percent_plot %>% 
  group_by(Name) %>% 
  nest() %>% 
  mutate(plot = map2(Name, data, plot_group)) %>% 
  select(-data)
  
indiv_disp_2 = indiv_disp %>% 
  inner_join(sparklines, by = "Name") %>% 
  mutate(`Season Trend` = NA)
```

```{r Printing Individual Table2, echo=FALSE}
# Printing the individual Table
indiv_table = indiv_disp_2 %>% gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("Individual Results"),
    subtitle = md(glue("Week {length(weeks)}"))
    ) %>% 
   tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(Percent),
      rows = Percent<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(Percent),
      rows = Percent>.5
    )) %>% 
     tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`>.5
    ))%>% 
     tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`>.5
    )) %>% 
  tab_options(
    container.width = pct(100),
    data_row.padding = px(1),
    container.height = "100%"
   ) %>%
    tab_spanner(
    label = "Weekly # Correct",
    columns = starts_with(c("Week "))
  ) %>% 
  text_transform(
    locations = cells_body(c(`Season Trend`)),
    fn = function(x){
      map(indiv_disp_2$plot, ggplot_image, height = px(30), aspect_ratio = 4)
                 }) %>%
  cols_hide(c(plot))

indiv_winners = indiv_disp_2 %>% filter(Percent == max(Percent)) %>% select(Name) %>% pull() %>% paste(collapse = ", ")
indiv_season = indiv_disp_2 %>% filter(`Season Percent` == max(`Season Percent`)) %>% select(Name) %>% pull() %>% paste(collapse = ", ")
indiv_season_adj = indiv_disp_2 %>% filter(`Adj Season Percent` == max(`Adj Season Percent`)) %>% select(Name) %>% pull()%>% paste(collapse = ", ")
```

```{r Printing Season Leaderboard, echo=FALSE}
# Printing the Season Leaderboard
  
season_leaderboard_disp = indiv_disp_2 %>% select(Name, starts_with("Week ")) %>% 
  pivot_longer(starts_with("Week"),names_to = "Week", values_to = "Correct") %>% 
  group_by(Week) %>% 
  mutate(Correct = case_when(is.na(Correct)==T~0, 
                             TRUE~Correct)) %>% 
  mutate(Donut = case_when(Correct==max(Correct)~1,
                           TRUE~0))  %>% 
  ungroup() %>% 
  group_by(Name) %>% 
  summarise(`Donuts Won` = sum(Donut)) %>% 
  #mutate(`Donuts Won` = strrep("award,", Donuts)) %>% 
  right_join(.,indiv_disp_2) %>% 
  select(-starts_with("Week "), -Percent) %>% 
  mutate(`Season Rank` = min_rank(desc(`Season Percent`)),.before = Name) %>% 
  arrange(`Season Rank`) 
  
season_leaderboard = season_leaderboard_disp %>% 
  gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("Season Leaderboard (Season Percent)"),
    subtitle = md(glue("Week {length(weeks)}"))
    ) %>% 
  # fmt_icon(
  #   columns = `Donuts Won`,
  #   fill_color = "gold",
  # ) %>%
  tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`>.5
    ))%>% 
     tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`>.5
    )) %>% 
  tab_options(
    container.width = pct(100),
    data_row.padding = px(1),
    container.height = "100%"
   ) %>%
    tab_spanner(
    label = "Weekly # Correct",
    columns = starts_with(c("Week "))
  ) %>% 
  text_transform(
    locations = cells_body(c(`Season Trend`)),
    fn = function(x){
      map(season_leaderboard_disp$plot, ggplot_image, height = px(30), aspect_ratio = 4)
                 }) %>%
  cols_hide(columns = c(plot))
```

```{r Printing Adj Season Leaderboard, echo=FALSE}
# Printing the Adj Season Leaderboard
  
adj_season_leaderboard_disp = indiv_disp_2 %>% select(Name, starts_with("Week ")) %>% 
  pivot_longer(starts_with("Week"),names_to = "Week", values_to = "Correct") %>% 
  group_by(Week) %>% 
  mutate(Correct = case_when(is.na(Correct)==T~0, 
                             TRUE~Correct)) %>% 
  mutate(Donut = case_when(Correct==max(Correct)~1,
                           TRUE~0))  %>% 
  ungroup() %>% 
  group_by(Name) %>% 
  summarise(`Donuts Won` = sum(Donut)) %>% 
  #mutate(`Donuts Won` = strrep("award,", Donuts)) %>% 
  right_join(.,indiv_disp_2) %>% 
  select(-starts_with("Week "), -Percent) %>% 
  mutate(`Season Rank` = min_rank(desc(`Adj Season Percent`)),.before = Name) %>% 
  arrange(`Season Rank`)

adj_season_leaderboard = adj_season_leaderboard_disp %>% 
  gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("Season Leaderboard (Adjusted Season Percent)"),
    subtitle = md(glue("Week {length(weeks)}"))
    ) %>% 
  # fmt_icon(
  #   columns = `Donuts Won`,
  #   fill_color = "gold",
  # ) %>%
  tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`>.5
    ))%>% 
     tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`>.5
    )) %>% 
  tab_options(
    container.width = pct(100),
    data_row.padding = px(1),
    container.height = "100%"
   ) %>%
    tab_spanner(
    label = "Weekly # Correct",
    columns = starts_with(c("Week "))
  ) %>% 
  text_transform(
    locations = cells_body(c(`Season Trend`)),
    fn = function(x){
      map(adj_season_leaderboard_disp$plot, ggplot_image, height = px(30), aspect_ratio = 4)
                 }) %>%
  cols_hide(columns = c(plot))
```


```{r instructor formattable, echo=FALSE}
improvement_formatter <- 
  formatter("span", 
            style = x ~ formattable::style(
              font.weight = "bold", 
              color = ifelse(x > .5, "green", ifelse(x < .5, "red", "black"))),
             x ~ icontext(ifelse(x == max(x), "star", ""), x))

indiv_disp_3 = indiv_disp_2 %>% select(-plot)
indiv_disp_3$`Season Trend` = apply(indiv_disp_3[,2:(1+length(weeks))], 1, FUN = function(x) as.character(htmltools::as.tags(sparkline(as.numeric(x), type = "line", chartRangeMin = 0, chartRangeMax = 1, fillColor = "white"))))

indiv_table_2 = as.htmlwidget(formattable(indiv_disp_3, 
                                align = c("l", rep("c", NROW(indiv_disp_3)-1)),
              list(`Season Percent` = color_bar("#FA614B"),
              `Season Percent`= improvement_formatter,
              `Adj Season Percent`= improvement_formatter)))
              
indiv_table_2$dependencies = c(indiv_table_2$dependencies, htmlwidgets:::widget_dependencies("sparkline", "sparkline"))
```

```{r Plotting individual results over the season2, eval=FALSE, include=FALSE, out.width="100%"}
#Creating the individual plot.  
inst_indiv_plots = weekly_indiv_percent_plot %>% 
  ggplot(aes(x = factor(Week), y = Percent, color = Name))+
  geom_point()+
  geom_path(aes(x = as.factor(Week), y = Percent, color = Name, 
                group = Name))+
  ylim(c(0, 1)) +
  labs(x = "NFL Week", 
       y = "Correct Percentage", 
       title = "Weekly Individual Correct Percentage")+
  facet_wrap(~Name)+
  theme_classic()+
  theme(legend.position = "none",
        plot.title = element_text(hjust = 0.5, size = 18),
        axis.text.x=element_text(angle =45, vjust = 1, hjust = 1))
```

```{r data for data page}
inst.data = map2(inst.picks, weeks, disp_data) %>% bind_rows()
```


```{r fivethirtyeight}
inst_538 = map(results, five38) %>% unlist() %>% sum()
```

```{r pregame, eval=FALSE, include=FALSE}
#Predictions for the week

#Creating the list of group predictions each week.
games = map(inst.picks, games_fn)

#Creating the prediction table.  
pred_table = map(games, pred_table_fn)

#Printing table of instructor predictions
pred_table[[length(pred_table)]] %>% mutate(Game = row_number()) %>% 
  rename(`Votes For` = votes_for, `Votes Against` = votes_against) %>% 
  gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("This Week's Predictions"),
    subtitle = md(glue("Week {length(weeks)}"))
    ) %>% 
   tab_options(
    data_row.padding = px(3)
   )
```

Group Predictions
==========================================================================

Sidebar {.sidebar} 
-------------------------------------
#### CBS Sports

<font size="4">

This week we beat or tied `r cbs_experts_beat[[length(weeks)]]` of `r cbs_experts_total[[length(weeks)]]` CBS Sports' Experts.

For the season we are currently beating or tied with `r cbs_experts_beat_season[[length(weeks)]]` of `r cbs_experts_season_total[[length(weeks)]]` CBS Sports' Experts.
 
 </font>


#### ESPN

<font size="4">

We also beat or tied `r espn_experts_beat[[length(weeks)]]` of `r espn_experts_total[[length(weeks)]]` ESPN Experts.
 
For the season we are currently beating or tied with `r espn_experts_beat_season[[length(weeks)]]` of `r espn_experts_season_total[[length(weeks)]]` ESPN Experts.

</font>

Row
--------------------------------------

### Win percentage for the week

```{r}
inst_rate <- weekly_win_percentage[[length(weekly_win_percentage)]]*100
gauge(inst_rate, min = 0, max = 100, symbol = '%', gaugeSectors(
  success = c(55, 100), warning = c(40, 54), danger = c(0, 39)
))
```

### Season Win Percentage

```{r}
inst_season <- season_win_percentage*100
gauge(inst_season, min = 0, max = 100, symbol = '%', gaugeSectors(
  success = c(55, 100), warning = c(40, 54), danger = c(0, 39)
))
```

### Games Correct
```{r}
valueBox(value = season_wins,icon = "fa-trophy",caption = "Correct Games this Season")
```

### Games Picked
```{r}
valueBox(value = season_games,icon = "fa-clipboard-list",caption = "Games Picked this Season")
```

### Number of predictions
```{r}
valueBox(value = Total,icon = "fa-users",caption = "Predictions this week")
```

Row
--------------------------------------

### 

```{r}
inst_group_table
```

### 

```{r}
ggplotly(inst_group_season_plot) %>% 
  layout(title = list(y = .93, xref = "plot"),
         margin = list(t = 40))
```

Individual Predictions
==========================================================================


Sidebar {.sidebar} 
-------------------------------------

#### Best Picks of the Week.

<font size="4">

 `r indiv_winners`
 
 </font>
 
#### Best Season Correct Percentage
<font size="4">

`r indiv_season`
 
 </font>

#### Best Adjusted Season Correct Percentage
<font size="4">

`r indiv_season_adj`

 * Adjusted season percentage accounts for the number of weeks picked.
 
 </font>

row {.tabset}
--------------------------------------

### Individual Table
```{r}
indiv_table
```

<!--
### Individual Table2

```{r, out.height="100%"}
indiv_table_2
```

-->

<!--

### Individual Plots
```{r, out.width="100%"}
#ggplotly(inst_indiv_plots)
```

-->

### Season Leaderboard
```{r, out.width="100%"}
season_leaderboard
```

### Adjusted Season Leaderboard
```{r, out.width="100%"}
adj_season_leaderboard
```

Data
==========================================================================

```{r}
datatable(
  inst.data, extensions = 'Buttons', options = list(
    dom = 'Blfrtip',
    buttons = c('copy', 'csv', 'excel', 'pdf', 'print'),
    lengthMenue = list( c(10, 25, 50, 100, -1), c(10, 25, 50, 100, "All") )
  )
)
```